/*
 * main.cpp
 *
 *  Created on: 22/09/2012
 *      Author: Pablo Marcoré
 */

#include<iostream>
#include "PalabraAleatoria.h"
#include "ConversorCadena.h"
#include "GeneradorAleatorio.h"
#include "Normalizador.h"
#include<fstream>
#include<cstdlib>

using namespace std;

#define FALLA \
	cout<<"falla al abrir archivo"<<endl;
#define IMP(v) \
	cout<<#v<<" es = "<<v<<endl;

void testLevantarRegistros(){
	const unsigned short CANT_REGISTROS= 3;
	ifstream entrada("DiccionarioSalidaBinario",fstream::binary);
	if(!entrada.is_open()){
		FALLA;
		return;
	}

	PalabraAleatoria* pas= (PalabraAleatoria*)malloc(sizeof(PalabraAleatoria)*CANT_REGISTROS);
	entrada.read((char*)pas,sizeof(PalabraAleatoria)*CANT_REGISTROS);
	for(int i=0;i<CANT_REGISTROS;i++){
		IMP(pas[i].getPalabra());
		IMP(pas[i].getIdentificador());
	}

	entrada.close();
	delete[] pas;
}//testLevantarRegistros FUNCIONA


void normalizar(){

	Normalizador n;
	ofstream salidaTexto("DiccionarioSalida.txt");
	ofstream salidaBinario("DiccionarioSalidaBinario");
	char* termino = new char[PalabraAleatoria::TAM_PALABRA];
	long random;
	GeneradorAleatorio generador;
	const unsigned long LIMITE_GENERADOR= 1000000;


	n.normalizar("utf8Texto.txt", "Diccionario.txt");

	ifstream entrada("Diccionario.txt");


	while (not entrada.eof()){
		entrada>>termino;
		random= generador.generar(LIMITE_GENERADOR);
		PalabraAleatoria* pa= new PalabraAleatoria(termino,random);
		pa->guardar(&salidaBinario);
		pa->guardarComoTexto(&salidaTexto);
		delete pa;

	}


	delete[] termino;
	salidaTexto.close();
	salidaBinario.close();
	entrada.close();

}//normalizar


int main(int argc, char** argv) {

	normalizar();

	return 0;
}//main
